
package proxy.statical.imperfect;

import com.e885.log.E885Logger;
import common.HelloException;
import common.HelloInterface;

/**
 * business logic 主要為印出 "hello:" + name, 但在 method sayHello() 還有 log 的動作, 這樣如果把他想像如果 log 動作很多, 可能會造成 log 的程式碼還會<br>
 * 超過主要的 business logic 程式碼, 形成未來維護的困難, 以及閲灠程式碼的困難度, 或者以後不想記錄這些 log, 那麼就要費時的從這些程式碼把 log 的部份拿掉<br>
 * 1. 這些 log 的動作, 在 AOP 叫做 cross-cutting(横切入)<br>
 * 2. 要糾正以上的缺點, 可參考 perfect 的 package.
 * 
 * @author Eric.Kao(gau168.gau@msa.hinet.net)
 * @version 1.0
 * @company E885 Group
 * @copyright Copyright (c) 2001-2008
 */

public class ImperfectHelloSpeaker implements HelloInterface
{

	/*
	 * (non-Javadoc)
	 * 
	 * @see common.HelloInterface#sayHello(java.lang.String)
	 */
	public void sayHello( String name ) throws HelloException
	{
		// log 太多的程式碼, 影響程式的可讀性,及未來維誰的困難
		E885Logger.springLog.debug( "在這裏 記錄 log..." );
		E885Logger.springLog.debug( "在這裏 記錄 log..." );
		E885Logger.springLog.debug( "在這裏 記錄 log..." );

		System.out.println( "hello:" + name );
	}

	public void sayHi( String name ) throws HelloException
	{
		// 目前用不到
		throw new IllegalStateException( "Not implementation" );
	}
}
